Agregar una class al input Vtiger

Fecha de creación
Revisión1.0
AreaDeveloper
PropietarioCreantis
REV.FECHABREVE DESCRIPCIÓN DEL CAMBIOAUTOR
1.016-10-2023Crear documentoCGARCIA

1. Requerimientos

  1. Usar VSCODE
  1. Tener Incorporado el complemento del repocitorio creantis en la instancia
  1. Incluir las mejoras de vtiger creado por creantis (link version 7.5)
💡
Crear nueva tabla en la Base de datos en caso de que no se encuentre en la instancia
CREATE TABLE IF NOT EXISTS `vt_field_input` (
  `idvt_field_input` int(11) NOT NULL AUTO_INCREMENT,
  `classfield` text DEFAULT NULL,
  `fieldid` int(11) NOT NULL,
  PRIMARY KEY (`idvt_field_input`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci

2. Editar en VSCODE por Buscador

Buscar todos los archivos *.tpl que contengan la siguiente frase class="inputElement por class="inputElement {$FIELD_MODEL->get('classfield')}

📝
Colocar un espacio al final de las frases de busqueda y remplazo

Example

Buscar el archivo vtlib/Vtiger/Field.php que contengan la siguiente frase SELECT * FROM vtiger_field por SELECT * FROM vtiger_field NATURAL LEFT JOIN vt_field_input

📝
Colocar un espacio al final de las frases de busqueda y remplazo

Example

  • Busqueda
  • Resultado.

3. Incluir lineas de codigo en Vtiger

# Archivo : vtlib/Vtiger/FieldBasic.php
function initialize($valuemap, $moduleInstance=false, $blockInstance=false) {
		$this->id = $valuemap['fieldid'];
		$this->name = $valuemap['fieldname'];
		$this->label= $valuemap['fieldlabel'];
		$this->column = $valuemap['columnname'];
		$this->table  = $valuemap['tablename'];
		$this->uitype = $valuemap['uitype'];
		$this->typeofdata = $valuemap['typeofdata'];
		$this->helpinfo = $valuemap['helpinfo'];
		$this->masseditable = $valuemap['masseditable'];
		$this->displaytype   = $valuemap['displaytype'];
		$this->generatedtype = $valuemap['generatedtype'];
		$this->readonly      = $valuemap['readonly'];
		$this->presence      = $valuemap['presence'];
		$this->defaultvalue  = $valuemap['defaultvalue'];
		$this->quickcreate = $valuemap['quickcreate'];
		$this->sequence = $valuemap['sequence'];
		$this->summaryfield = $valuemap['summaryfield'];
		$this->isunique = $valuemap['isunique'];
		$this->classfield  = $valuemap['classfield']; // incluir los campos de la tabla

		$this->block= $blockInstance? $blockInstance : Vtiger_Block::getInstance($valuemap['block'], $moduleInstance);
		$this->headerfield = $valuemap['headerfield'];
	}

4. Gestionar Class por Complemento

Ingresar al menu en la opcion de la validaciones de campos

Se debe llenar el fomularion selecionando el campo del modulo y escribir la clase segun la leyenda

5. Conclusión

Esto permitira enlazar las dos tablas e incluir las class para hacer validaciones libres o ya configuradas en todos los campos o inputs que sea declarada

al inspeccionar el elemento podemo vizualizar que se ha incluido la class en el campo

5. Notas

Las pruebas realizadas se hicienron el la version de 7.5 en la instancia https://750.creantis.dev/750devmigra02/

El archivo de complemento/module/validaciones/controller/validaciones.js se importa en el head de vtiger por el archivo del las mejoras resources/CreantisJsHeader.js con la funcion cargarArchivoJS